/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vista.patologias;

import java.util.Iterator;
import java.util.List;
import modelo.patologias.*;
import util.components.IGestorBusqueda;
import vista.GestorVistaABMPnl;





/**
 *
 * @author raul
 */
public class GestorVistaPatologiasPnl extends GestorVistaABMPnl
        implements IGestorBusqueda {
    
    private PatologiasPnl formulario;
    private GestorEnfermedad gestorModelo = new GestorEnfermedad();
    private String titulo = "Patologias";
    private String icono = "/resources/pathology_16.png";
    private String reporte = "/vista/patologias/ReportePatologias.jasper";

    @Override
    public void abrirFormulario() {
        setFormulario(new PatologiasPnl(this));
        inicializarVista();
    }

    @Override
    public PatologiasPnl getFormulario() {
        return formulario;
    }

    @Override
    public GestorEnfermedad getGestorModelo() {
        return gestorModelo;
    }

    public void setGestorModelo(GestorEnfermedad gestorModelo) {
        this.gestorModelo = gestorModelo;
    }

    public void setFormulario(PatologiasPnl formulario) {
        this.formulario = formulario;
    }

    @Override
    public String getIcono() {
        return icono;
    }

    @Override
    public String getTitulo() {
        return titulo;
    }

    @Override
    public void registrarNuevaEntidad() {
        GestorVistaEditorPatologia gestorEditor = new GestorVistaEditorPatologia();
        gestorEditor.setFormulario(formulario);
        getFormulario().setGestorEdicion(gestorEditor);
    }

    @Override
    public void modificar(Object modelo) {
        if (modelo instanceof Enfermedad) {
            GestorVistaEditorPatologia gestorEditor = new GestorVistaEditorPatologia((Enfermedad) modelo);
            getFormulario().habilitarEdicion(true);
            setEnfermedadEnVista(modelo);
            gestorEditor.setFormulario(formulario);
            getFormulario().setGestorEdicion(gestorEditor);
        }
    }

    @Override
    public void eliminar(Object modelo) {
        if (modelo instanceof Enfermedad) {
            gestorModelo.setModelo((Enfermedad) modelo);
            gestorModelo.eliminar();
            getFormulario().quitarNodo(modelo);
        }
    }

    @Override
    public void imprimir(List datos) {
        super.mostrarReporte(reporte,
                "Listado De Patologías",
                datos);
    }
    
    public void listarTodos(){
        super.mostrarReporte(reporte,
                "Listado De Patologías",
                gestorModelo.listarEnfermedades());
    }

    @Override
    public int mostrarDialogoDeEliminacion() {
        return super.mostrarDialogoDeEliminacion(getFormulario(), "¿Esta seguro que lo desea eliminar?");
    }

    @Override
    public void cargarModeloComponente() {
        getFormulario().crearModeloArbol(new EnfermedadesTreeModelo(), super.createImageIcon(getIcono()));
    }

    @Override
    public void cargarDatos(java.util.Collection datos) {
        Iterator<Enfermedad> i = datos.iterator();
        while (i.hasNext()){
            Enfermedad e = i.next();
            getFormulario().agregarNodoArbol(e.getTipoEnfermedad(), e);
        }
    }

    @Override
    public void busquedaRapida(String filtro, String valor) {
        cargarModeloComponente();
        cargarDatos(gestorModelo.buscar(filtro, valor));
    }

    void cargarDescripcionTipoEnfermedad(Object e) {
        if (e != null) {
            getFormulario().getDescripcionDeTipoDeEnfermedadTxt()
                    .setText(((TipoEnfermedad)e).getDescripcion());
        } else {
            getFormulario().getDescripcionDeTipoDeEnfermedadTxt().setText("");
        }
    }

    private void inicializarVista() {
        List tiposEnfermedad = getGestorModelo().listarTiposEnfermedad();
        getFormulario().cargarComboTipoEnfermedad(tiposEnfermedad);
        getFormulario().cargarComboTipoEnfermedadBusq(tiposEnfermedad);
        cargarModeloComponente();
        cargarDatos(getGestorModelo().listarEnfermedades());
        getFormulario().cargarCheckListParentescos(getGestorModelo().listarParentescos());
    }

    void setEnfermedadEnVista(Object objetoSeleccionado) {
        if (objetoSeleccionado instanceof Enfermedad) {
            Enfermedad e = (Enfermedad) objetoSeleccionado;
            getFormulario().getNombreEnfermedadTxt().setText(e.getNombre());
            getFormulario().getDescripcionDeEnfermedadTxt().setText(e.getDescripcion());
            getFormulario().getTipoDeEnfermedadCmb().setSelectedItem(e.getTipoEnfermedad());
            cargarDescripcionTipoEnfermedad(e.getTipoEnfermedad());
            getFormulario().cargarListaSintomas(e.getSintomas());
            getFormulario().getLigadaAlSexoChk().setSelected(e.isLigadaAlSexo());
            getFormulario().setearParentescosTransmisores(e.getParentescosTransmisores());
        }
    }

    void agregarSintomas(List objetosEnLista) {
        List sintomas = gestorModelo.listarSintomas();
        sintomas.removeAll(objetosEnLista);
        getFormulario().cargarCheckListSintomas(sintomas);
    }

    void abrirFormularioSintoma(SintomasPnl editorSintomasPnl) {
        GestorVistaSintomaPnl g = new GestorVistaSintomaPnl();
        g.setFormulario(editorSintomasPnl);
        editorSintomasPnl.setGestorVista(g);
        getFormulario().getEditorSintomasDlg().setVisible(true);
    }
    
    void abrirFormularioTipoEnfermedad(TipoEnfermedadPnl editorTipoEnfermedadPnl) {
        GestorVistaTipoEnfermedadPnl g = new GestorVistaTipoEnfermedadPnl();
        g.setFormulario(editorTipoEnfermedadPnl);
        editorTipoEnfermedadPnl.setGestorVista(g);
        g.inicializarVista();
        getFormulario().getEditorTiposEnfermedadDlg().setVisible(true);
    }    
}
